package net.linlan.plat.comm.aspect;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 *
 * Filename PlatLogAspect,切面控制:会员日志控制切面类
 * 会员日志，切面处理类应用方法：在Controller上添加@PlatLog即可
 * @author Linlan
 * CreateTime 2023-07-29 9:39
 * @version 1.0
 * @since 1.0
 *
 */
@Aspect
@Component
public class PlatLogAspect {
    /**
     * 切面MemberLog日志是否保存在管理日志中，默认为true，如果不保存设置变量为false
     */
    @Value("${platform.frame.savePlatLog:true}")
    private boolean savePlatLog;

    @Pointcut("@annotation(net.linlan.commons.core.annotation.PlatLog)")
    public void logPointCut() {

    }

    @Around("logPointCut()")
    public Object around(ProceedingJoinPoint point) throws Throwable {
        //默认为保存，如果不需要保存操作日志，则配置变量为false，不保存日志
        if (savePlatLog) {
            long beginTime = System.currentTimeMillis();
            //执行方法
            Object result = point.proceed();
            //执行时长(毫秒)
            long time = System.currentTimeMillis() - beginTime;

            //保存日志

            return result;
        }
        return null;
    }

}
